#include <iostream>  //C++的标准输入输出流头文件
#include <cstring>  //#include <string.h>
using namespace std; //我要使用命名空间std
/*
	new申请堆空间
	   公式：new 数据类型
	delete释放堆空间
*/

struct student
{
	char name[10];
	int age;
};

int main()  
{
	//申请一个int大小的堆空间
	int *p=new int;  //int *p=malloc(sizeof(int))
	
	//申请多个int大小的堆空间
	int *p1=new int[10];  //int *p1=malloc(10*sizeof(int))
	
	//申请一个int大小的堆空间，给它赋初始值
	//()表示赋值，[]表示申请多少个类型的堆空间
	int *p2=new int(10);  //int *p2=malloc(sizeof(int))  *p2=10
	
	struct student *p3=new struct student;
	struct student *p4=new struct student[8];
	
	//使用堆空间--》C语言的知识
	*p=456;
	*p1=10;       //p1[0]=10
	*(p1+1)=11;   //p1[1]=11
	strcpy(p3->name,"张三");
	p3->age=18;
	
	cout<<"*p is: "<<*p<<endl;
	cout<<"*p2 is: "<<*p2<<endl;
	//释放堆空间
	//如果你申请的时候用到了[]，释放的时候就必须用[]
	delete p;
	delete []p1;
	delete p2;
	delete p3;
	delete []p4;
	return 0;
}


